Skip to content

Avoid dormant ATT signatures in app binaries - #496

Draft
thisislvca wants to merge 1 commit into
superwall:developfrom
thisislvca:codex/fix-att-static-signatures
Draft

Avoid dormant ATT signatures in app binaries#496
thisislvca wants to merge 1 commit into
superwall:developfrom
thisislvca:codex/fix-att-static-signatures

Conversation

@thisislvca

Copy link
Copy Markdown

Summary

  • decode the tracking usage-description key at runtime instead of embedding it as a plaintext SDK constant
  • keep the ATT class and selectors runtime-resolved while preserving tracking-permission behavior for apps that use it
  • replace the Objective-C-compatible fake tracking manager with direct notDetermined fallbacks so its method signature is not emitted into the framework binary
  • cover the decoded key and unavailable-manager fallbacks with focused tests

Why

App Store Connect can infer that an app uses App Tracking Transparency from dormant identifiers and Objective-C method signatures in a bundled SDK, even when the app never requests tracking permission. This can trigger tracking declarations or review questions for apps that do not use ATT.

The ATT implementation remains available when ATTrackingManager exists. If it is unavailable, the proxy continues to return notDetermined, matching the previous fallback behavior.

Fixes #495

Validation

  • TrackingManagerProxyTests: 6 tests passed on an iPhone 17 Pro simulator
  • built SuperwallKit.framework scanned with strings; no matches for NSUserTrackingUsageDescription, requestTrackingAuthorizationWithCompletionHandler:, or requestTrackingAuthorization()
  • git diff --check passes

cc @yusuftor @jakemor @anglinb

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

App Store Connect detects dormant ATT signatures when tracking permission is unused

1 participant